package ru.gosoplata.model 
{
	import data.WCData;
	import flash.text.TextFormat;
	import img.LoadedImages;
	import ru.gosoplata.controller.TmpGlobalController;
	import ru.gosoplata.debug.DebugOutput;
	import ru.gosoplata.service.ConfigService;
	import ru.gosoplata.service.conn.BillAcceptor;
	import ru.gosoplata.service.CookieService;
	import scr.ScreenController;
	import usr.ServiseData;
	/**
	 * ...
	 * @author 
	 */
	public class TmpModel 
	{
		static public const MAIN_VERSION:String = "v0.32 ("+CONFIG::timeStamp+")";
		static public const IMG_FOLDER:String = "img";
		
		static public var MAX_SUM_TERM:uint = 15000;
		
		static public const payment:Payment=new Payment();
		static private var _config:XML;
		
																			static public const wcData:WCData = new WCData();
		//
		// SERVISES
		static public var acceptor:BillAcceptor;
		
		static public const loadedImages:LoadedImages=new LoadedImages();
		static public const screenController:ScreenController=new ScreenController();
		
		static public const debugOutput:DebugOutput = new DebugOutput(1000,280);
		static public const cookieService:CookieService = new CookieService();
		static public const configService:ConfigService = new ConfigService();
		
		//new
		static public const tmpGlobalController:TmpGlobalController = new TmpGlobalController();
		
		//TODO: заменить. нужно запрашивать что то типа "btnLabel" "title" - да и вообще старлинг или хотябы флекс
		static public function getTextFormat(size:uint, color:uint, bold:Boolean=false):TextFormat 
		{
			var tf:TextFormat = new TextFormat();
            tf.color = color;
            tf.size = size;
            tf.font = "Tahoma";
			tf.bold = bold;
			return tf;
		}
		
		static public function get config():XML 
		{
			return _config;
		}
		
		static public function set config(value:XML):void 
		{
			_config = value;
			if (_config)
			{
				MAX_SUM_TERM = uint(_config.terminal.@max_sum);
				// 
				// провайдер есть в списке на отображение config.req.providers.row
				// но отсутствует в списке провайдеров config.providers.provider
				//for each ( xml in _config.req.providers.row) 
				//{
					//if( _config.providers.provider.(@id == xml.@prv_id).length()==0) 
					//{
						//delete _config.req.providers.row.(@id==xml.@id)[0];
					//}
				//}
				// дозаполняю пустые/отсутствующие @regex
				_config.req.providers.row.(!hasOwnProperty("@regex")).(attributes().parent().@regex = (@folder == "cellular"?"^[0-9]{10}$":"^.{1,999}$"));
				// @fixPrice - только для туалета пока. //TODO: @fixPrice - если будет больше провайдеров с фиксированной суммой платежа нужно будет добиваться внесения этой переменной в конфиг. 
				_config.req.providers.row.(!hasOwnProperty("@fixPrice")).(attributes().parent().@fixPrice = 0);
				// система иерархии вложенностей.
				// 3 - распределяю элементы по созданным папкам (пункт 2)
				_config.req.providers.row.(@parent_id == "0").(@parent_id = @folder);
				// 2 - создаю и вкладываю в all папки по именам переданных папок. 
				// возможно использовать для отображения кнопок на Index_service.
				var foldersList:XMLList = _config.req.providers.row.@folder;
				var existFolders:Object = { };
				var folderNameXml:XML;
				for each (folderNameXml in foldersList) 
				{
					if (!existFolders[folderNameXml]) {
						existFolders[folderNameXml] = 1;
						var folderXml:XML =<row id="" parent_id="all" prv_id="0" image="" folder="all" next_page="" is_folder="1" name="" length="" regex="" fixPrice="0"/>;
						folderXml.@id = folderNameXml;
						_config.req.providers.appendChild(folderXml);
					}
				}
				// 1 - создаю папку all 
				_config.req.providers.appendChild(<row id="all" parent_id="0" prv_id="0" image="" folder="" next_page="" is_folder="1" name="" length="" regex="" fixPrice="0"/>);
				// а сортирного провайдера нам не передают. никуда не вложена. тот же уровень что и папка all
				_config.req.providers.appendChild(<row id="wc" parent_id="0" prv_id="1000175" image="wc.png" folder="wc" next_page="" is_folder="0" name="WC" length="2" regex="(^wc$)" fixPrice="30"/>);
			}
			
			//TmpModel.debugOutput.add("-------------\n" +_config.toXMLString()+'\n---------------------------------');
			//TmpModel.debugOutput.add("-------------\n" +_config.req.providers.row.(@parent_id=="wc").toXMLString()+'\n---------------------------------');
			//TmpModel.debugOutput.add("-------------\n" +_config.req.providers.row.toXMLString()+'\n---------------------------------');
			
			//TODO: PROFILE определение сортира или нет профайла по ServiseData.READY (есть ли в конфиге нод про сортирных техников). костыль. Клименко отказыватся делать нормальное определение.
			ServiseData.getInstance();
		}
	}
}